package modelo;

import com.sun.org.apache.xml.internal.security.exceptions.Base64DecodingException;
import java.io.Serializable;
import java.io.UnsupportedEncodingException;
import java.security.InvalidKeyException;
import java.security.NoSuchAlgorithmException;
import java.security.PrivateKey;
import java.security.PublicKey;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.crypto.BadPaddingException;
import javax.crypto.IllegalBlockSizeException;
import javax.crypto.NoSuchPaddingException;
import servicos.RSA;

/**
 *
 * @author Edemilson Danker
 * @author Jefferson Sidney Rossetim
 * @author Rogerio Mello Vanti
 */
public class Cliente implements Serializable{

    private String nome;
    private String cpf;
    private String numeroCartao; 
    private RSA rsa;
    private PrivateKey chavePrivadaRSA;    
    private PublicKey chavePublicaDSA;  
  

    public PrivateKey getChavePrivadaRSA() {
        return chavePrivadaRSA;
    }

    public void setChavePrivadaRSA(PrivateKey chavePrivada) {
        this.chavePrivadaRSA = chavePrivada;
    }
    
    public PublicKey getChavePublicaDSA() {
        return chavePublicaDSA;
    }

    public void setChavePublicaDSA(PublicKey chavePublicaDSA) {
        this.chavePublicaDSA = chavePublicaDSA;
    }

    public Cliente() {
        this.nome = null;
        this.cpf = null;
        this.numeroCartao = null;
        this.rsa = new RSA();
    }//fim construtor

    public Cliente(String nome, String cpf, String numeroCartao) {
        this.nome = nome;
        this.cpf = cpf;
        this.numeroCartao = numeroCartao; 
        this.rsa = new RSA();
        
    }//fim construtor

    public String getNome() {
        return nome;
    }

    public void setNome(String nome) {
        this.nome = nome;
    }

    public String getCpf() {
        return cpf;
    }

    public void setCpf(String cpf) {
        this.cpf = cpf;
    }

    public String getNumeroCartao() {
        return numeroCartao;
    }

    public void setNumeroCartao(String numeroCartao) {
        this.numeroCartao = numeroCartao;
    }  
    
    @Override
    public String toString() {
        String s = "";       
        try {
            s += getNome()+";"+getCpf()+";"+rsa.decifrarRSA(getNumeroCartao(), chavePrivadaRSA);
        } catch (Exception ex) {
            Logger.getLogger(Cliente.class.getName()).log(Level.SEVERE, null, ex);
        }
        
        return s;
    }//fim toString
    
}//fim class
